package Componentes;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

/**
 * @author Luis Antonio Lara Capetillo
 * Fecha: 05/09/11
 *
 * Descripcion:
 * Clase donde se crea un menu fijo en la parte superior de la ventana
 * con la obcion de editar las opciones
 *
 * @version 1.0
 */
public class C_MenuFijo extends JMenu {

    private JMenuBar mbarra;
    private MenuOpcion m_Opciones[];

    /**
     * Constructor de la clase C_MenuFijo
     *
     * @param ventana  JFrame donde ira el menu
     * @param numMenu  numero de opciones de la barra de menu
     */
    public C_MenuFijo(JFrame ventana, int numMenu) {
        mbarra = new JMenuBar();
        m_Opciones= new MenuOpcion[numMenu];
        ventana.add(mbarra,"North");
    }


    /*************************************************************************
     ***               Seccion de Setters y Getters                        ***
     *************************************************************************/

    /**
    * Metodo para optener el menu deseado de la barra de menu fijo
    * pasandole como prarametro el indice el menu, el indice empieza con el
    * numero 0
    *
    * @param num
    * @return m_Opciones[num]
    */
    public MenuOpcion getM_Opciones(int num) {
        return m_Opciones[num];
    }



    /*************************************************************************
     ***               Seccion de Metodos                                  ***
     *************************************************************************/


    /**
     * Metodo para añadir los elementos al menu Fijo
     * @param nomTitulo titulo del menu
     * @param nomOpciones[] nombre de las opciones
     * @param numMenu numero del menu
     */
    public void addMenu(String nomTitulo, String nomOpciones[], int numMenu) {
        m_Opciones[numMenu]=new MenuOpcion(nomTitulo,nomOpciones);
        mbarra.add(m_Opciones[numMenu]);
    }




    /*************************************************************************
     ***               Seccion de Clases internas                          ***
     *************************************************************************/
    /**
     * Clase para las opciones del menu hereda de JMenu
     */
    public class MenuOpcion extends JMenu{
        JMenuItem mItem_Opciones[];
        public MenuOpcion(String nomTitulo, String nomOpciones[]){
            this.setLabel(nomTitulo);
            mItem_Opciones=new JMenuItem[nomOpciones.length];
             for (int i = 0; i < mItem_Opciones.length; i++) {
                 mItem_Opciones[i]=new JMenuItem(nomOpciones[i]);
                 add(mItem_Opciones[i]);
             }
        }

        /**
         * Metodo para optener la opcion deceada del menu
         * @param num del indece del item
         * @return mItem_Opciones[num]
         */
        public JMenuItem getmItem_Opciones(int num) {
            return mItem_Opciones[num];
        }

    }
}
